/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.controlador;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.SubCategoria;
import sv.com.intesal.compra.sql.SQLSubCategoria;
import sv.com.intesal.conexion.cConexion;

/**
 *
 * @author JM
 */
public class SubCategoriaControlador {

    public void mantenimientoSubCategoria(SubCategoria subCategoria, SubCategoria combo) throws Exception {
        Connection c = cConexion.conectar();
        try {
            PreparedStatement psta;
            if (subCategoria.getId_su() == 0) {
                psta = c.prepareStatement(SQLSubCategoria.INSERTAR);
            } else {
                psta = c.prepareStatement(SQLSubCategoria.MODIFICAR);
                psta.setInt(3, subCategoria.getId_su());
            }
            psta.setInt(1, combo.getId_cat());
            psta.setString(2, subCategoria.getNombre_su());

            psta.executeUpdate();

            psta.close();
            c.close();


            Mensaje m = new Mensaje();
            if (subCategoria.getId_su() == 0) {
                m.message(m.getIinformation());
            } else {
                m.message(m.getImodificada());
            }
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void mantenimientoSubCategoria(SubCategoria subCategoria) throws Exception {
        Connection c = cConexion.conectar();
        try {
            PreparedStatement psta;
            if (subCategoria.getId_su() == 0) {
                psta = c.prepareStatement(SQLSubCategoria.INSERTAR);
            } else {
                psta = c.prepareStatement(SQLSubCategoria.MODIFICAR);
                psta.setInt(3, subCategoria.getId_su());
            }
            psta.setInt(1, subCategoria.getId_cat());
            psta.setString(2, subCategoria.getNombre_su());

            psta.executeUpdate();

            psta.close();
            c.close();


            Mensaje m = new Mensaje();
            if (subCategoria.getId_su() == 0) {
                m.message(m.getIinformation());
            } else {
                m.message(m.getImodificada());
            }
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<SubCategoria> getAllSubCategoria() throws Exception {
        List<SubCategoria> todasSubCAtegoria = new ArrayList<SubCategoria>();
        ResultSet rs = null;
        try {
            rs = cConexion.conectar().createStatement().executeQuery(SQLSubCategoria.ALL);
            while (rs.next()) {
                SubCategoria sc = new SubCategoria();
                sc.setId_su(rs.getInt("id_su"));
                sc.setId_cat(rs.getInt("id_cat"));
                sc.setId_sucat(rs.getInt("id_cat"));
                sc.setNombre_su(rs.getString("nombre_su"));
                sc.setNombre_cat(rs.getString("nombre_cat"));
                todasSubCAtegoria.add(sc);
            }
            return todasSubCAtegoria;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            if (rs != null) {
                rs.close();
            }
        }
    }

    public List<SubCategoria> getAllCategoria() throws Exception {
        List<SubCategoria> todasCategorias = new ArrayList<SubCategoria>();
        ResultSet rs = null;
        try {
            rs = cConexion.conectar().createStatement().executeQuery(SQLSubCategoria.ALLLista);
            while (rs.next()) {
                SubCategoria c = new SubCategoria();
                c.setId_cat(rs.getInt("id_cat"));
                c.setNombre_cat(rs.getString("nombre_cat"));
                todasCategorias.add(c);
            }
            return todasCategorias;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            if (rs != null) {
                rs.close();
            }
        }
    }

    public List<SubCategoria> getSubCategorias_x_Categoria(Integer codigo_cat) throws Exception {
        List<SubCategoria> lista = new ArrayList<SubCategoria>();
        ResultSet rs = null;
        PreparedStatement ps = null;
        Connection cnn = null;
        try {
            cnn=cConexion.conectar();
            ps =cnn.prepareStatement(SQLSubCategoria.getSubCategorias_x_Categoria);
            ps.setInt(1, codigo_cat);
            rs=ps.executeQuery();
            while (rs.next()) {
                SubCategoria sc = new SubCategoria();
                /*CATEGORIA*/
                sc.setId_cat(rs.getInt("id_cat"));
                sc.setNombre_cat(rs.getString("nombre_cat"));

                /*SUB CATEGORIA*/
                sc.setId_su(rs.getInt("id_su"));
                sc.setNombre_su(rs.getString("nombre_su"));
                lista.add(sc);
            }
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            if (rs != null) {
                rs.close();
            }
        }
    }
}
